import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.DropMode;
import java.awt.Color;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.ParseException;
import java.util.GregorianCalendar;
import javax.swing.JOptionPane;
import java.awt.Font;
import javax.swing.JFormattedTextField;
import javax.swing.text.MaskFormatter;
import javax.swing.JSeparator;
import javax.swing.JComboBox;
import java.awt.event.ItemListener;
import java.awt.event.ItemEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;

public class VueNouvMandataire extends Vue {

	/**
	 * 
	 */
	//private static final long serialVersionUID = 5069349224425178639L;
	private JPanel contentPane;
	private JTextField textFieldNom;
	private JTextField textFieldPrenom;
	private JTextField textFieldAdresse;
	
	// pour que les boutons soient des attributs, il faut faire "convert local to field"
	private JButton btnEnregistrer;
	private JButton btnAnnuler;

	// a ajouter car la vue est observatrice d'un client
	private CompteSociete _compte ;
	
	private JLabel lblDateNaissance;
	private JFormattedTextField textFieldDateNaissance;
	private JTextField TextFieldRetrait;
	private JLabel lblFonction;
	private JLabel lblDescriptionDuPoste;
	private JLabel lblAdressePersonnelle;
	private JTextField NumCompte;
	private JLabel lblNumroCompte;
	private JLabel nomSociete;
	private JComboBox comboDroits;
	private JComboBox comboFonction;
	private JLabel detailDroits;
	
	/**
	 * Create the frame.
	 * @throws ParseException 
	 */
	public VueNouvMandataire(Controleur controleur) throws ParseException {
		super (controleur);
		setTitle("Enregistrement d'un Nouveau Mandataire");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 600, 601);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblNom = new JLabel("Nom :");
		lblNom.setBounds(98, 178, 61, 16);
		contentPane.add(lblNom);
		
		textFieldNom = new JTextField();
		textFieldNom.setBounds(206, 178, 303, 28);
		textFieldNom.setBackground(new Color(255, 255, 255));
		contentPane.add(textFieldNom);
		textFieldNom.setColumns(10);
		
		btnEnregistrer = new JButton("Enregistrer");
		btnEnregistrer.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try{
					String nom = textFieldNom.getText().trim().toLowerCase();
					String prenom = textFieldPrenom.getText().trim().toLowerCase();
					String adresse = textFieldAdresse.getText().trim().toLowerCase();
					String dn = textFieldDateNaissance.getText().trim();
					float retraitMax = Float.valueOf(TextFieldRetrait.getText().trim()).floatValue();
					String titre = comboFonction.getSelectedItem().toString();
					DroitsMandataire.droits d = DroitsMandataire.droits.valueOf(comboDroits.getSelectedItem().toString());
					getControleur().nouvMandataire(nom, prenom, adresse, dn, retraitMax, titre, d, getCompte());
				}
				catch(Exception e){
					new Dialog().error("Erreur avec les données", e.getMessage());
				}
				return;
			}
		});
		btnEnregistrer.setBounds(303, 535, 117, 29);
		contentPane.add(btnEnregistrer);
		
		btnAnnuler = new JButton("Annuler");
		btnAnnuler.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getControleur().fermerVue(VueNouvMandataire.this);
			}
		});
		btnAnnuler.setBounds(174, 535, 117, 29);
		contentPane.add(btnAnnuler);
		
		JLabel lblPrnom = new JLabel("Prénom :");
		lblPrnom.setBounds(98, 234, 61, 16);
		contentPane.add(lblPrnom);
		
		textFieldPrenom = new JTextField();
		textFieldPrenom.setBounds(206, 234, 303, 28);
		contentPane.add(textFieldPrenom);
		textFieldPrenom.setColumns(10);
		
		JLabel lblAdresse = new JLabel("Adresse :");
		lblAdresse.setBounds(98, 285, 61, 16);
		contentPane.add(lblAdresse);
		
		textFieldAdresse = new JTextField();
		textFieldAdresse.setColumns(10);
		textFieldAdresse.setBounds(206, 285, 303, 28);
		contentPane.add(textFieldAdresse);
		
		lblDateNaissance = new JLabel("Date de naissance :");
		lblDateNaissance.setBounds(98, 345, 214, 16);
		contentPane.add(lblDateNaissance);
		
		textFieldDateNaissance = new JFormattedTextField(new MaskFormatter("##'/##'/####")); 
		textFieldDateNaissance.setBounds(335, 345, 174, 28);
		contentPane.add(textFieldDateNaissance);
		
		JLabel lblFormat = new JLabel("Format (01/01/2000)");
		lblFormat.setFont(new Font("Dialog", Font.ITALIC, 9));
		lblFormat.setBounds(107, 359, 102, 15);
		contentPane.add(lblFormat);
		
		JLabel lblRetraitMaximum = new JLabel("Retrait Maximum :");
		lblRetraitMaximum.setBounds(98, 382, 132, 15);
		contentPane.add(lblRetraitMaximum);
		
		JLabel lblRetraitMaximumAutoris = new JLabel("Retrait maximum autorisé");
		lblRetraitMaximumAutoris.setFont(new Font("Dialog", Font.ITALIC, 9));
		lblRetraitMaximumAutoris.setBounds(106, 397, 123, 15);
		contentPane.add(lblRetraitMaximumAutoris);
		
		TextFieldRetrait = new JTextField();
		TextFieldRetrait.setBounds(334, 385, 174, 28);
		contentPane.add(TextFieldRetrait);
		
		lblFonction = new JLabel("Fonction :");
		lblFonction.setBounds(98, 430, 111, 15);
		contentPane.add(lblFonction);
		
		lblDescriptionDuPoste = new JLabel("Description du poste dans la société");
		lblDescriptionDuPoste.setFont(new Font("Dialog", Font.ITALIC, 9));
		lblDescriptionDuPoste.setBounds(106, 445, 174, 15);
		contentPane.add(lblDescriptionDuPoste);
		
		lblAdressePersonnelle = new JLabel("Adresse personnelle");
		lblAdressePersonnelle.setFont(new Font("Dialog", Font.ITALIC, 9));
		lblAdressePersonnelle.setBounds(108, 301, 105, 15);
		contentPane.add(lblAdressePersonnelle);
		
		JLabel lblTitulaireDuCompte = new JLabel("Titulaire du Compte");
		lblTitulaireDuCompte.setBounds(29, 149, 130, 17);
		contentPane.add(lblTitulaireDuCompte);
		
		lblNumroCompte = new JLabel("Numéro Compte :");
		lblNumroCompte.setBounds(98, 36, 123, 15);
		contentPane.add(lblNumroCompte);
		
		NumCompte = new JTextField();
		NumCompte.setBounds(228, 30, 214, 28);
		contentPane.add(NumCompte);
		NumCompte.setColumns(10);
		
		JButton btnRechercher = new JButton("Rechercher");
		btnRechercher.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				String numCpt = NumCompte.getText().trim().toLowerCase();
				getControleur().rechCompteSociete(numCpt);
			}
		});
		btnRechercher.setBounds(477, 31, 107, 25);
		contentPane.add(btnRechercher);
		
		JLabel lblSocit = new JLabel("Société");
		lblSocit.setBounds(29, 66, 61, 15);
		contentPane.add(lblSocit);
		
		JLabel lblNom_1 = new JLabel("Nom :");
		lblNom_1.setBounds(98, 93, 61, 15);
		contentPane.add(lblNom_1);
		
		nomSociete = new JLabel("");
		nomSociete.setBounds(154, 93, 61, 15);
		contentPane.add(nomSociete);
		
		comboFonction = new JComboBox();
		comboFonction.setBounds(334, 425, 175, 24);
		contentPane.add(comboFonction);
		comboFonction.addItem("P-DG");
		comboFonction.addItem("Comptable");
		comboFonction.addItem("Employé");
		
		JLabel lblDroits = new JLabel("Droits :");
		lblDroits.setBounds(98, 475, 61, 15);
		contentPane.add(lblDroits);
		
		comboDroits = new JComboBox();
		
				
		comboDroits.setBounds(335, 470, 174, 24);
		contentPane.add(comboDroits);
		comboDroits.addItem("A");
		comboDroits.addItem("B");
		comboDroits.addItem("C");
		
		comboDroits.addItemListener(new ItemListener() {
			public void itemStateChanged(ItemEvent e) {
				int select = comboDroits.getSelectedIndex();
				if(select == 0){
					detailDroits.setText("Test A");
				}
				else if(select == 1){
					detailDroits.setText("Test B");
				}
				else{
					detailDroits.setText("Test C");
				}
			}
		});
		
		detailDroits = new JLabel("");
		detailDroits.setFont(new Font("Dialog", Font.ITALIC, 9));
		detailDroits.setBounds(154, 497, 335, 28);
		contentPane.add(detailDroits);
	}
	
	private CompteSociete getCompte() {
		return _compte;
	}
	private void setCompte(CompteSociete compte) {
		_compte = compte;
	}
	
	public void afficheInfos(CompteSociete cpt){
		setCompte(cpt);
		nomSociete.setText(getCompte().getSociete().getNom());
	}
	
	public void setEtat (int etat){
		switch (etat) {
		case initiale: {
			btnEnregistrer.setEnabled(true);
			btnAnnuler.setEnabled(true);
			break;
			}
		}
	}
}
